package arithmetic;

import java.util.Scanner;

/**
 * HJ33 整数与IP地址间的转换
 * 知识点：
 * 1.数字转二进制
 * 2.使用long类型，int取值范围为-2^31~2^31-1
 * 描述
 * 原理：ip地址的每段可以看成是一个0-255的整数，把每段拆分成一个二进制形式组合起来，然后把这个二进制数转变成
 * 一个长整数。
 * 举例：一个ip地址为10.0.3.193
 * 每段数字             相对应的二进制数
 * 10                   00001010
 * 0                    00000000
 * 3                    00000011
 * 193                  11000001
 *
 * 组合起来即为：00001010 00000000 00000011 11000001,转换为10进制数就是：167773121，即该IP地址转换后的数字就是它了。
 *
 * 数据范围：保证输入的是合法的 IP 序列
 *
 * 输入描述：
 * 输入
 * 1 输入IP地址
 * 2 输入10进制型的IP地址
 *
 * 输出描述：
 * 输出
 * 1 输出转换成10进制的IP地址
 * 2 输出转换后的IP地址
 *
 * 示例1
 * 输入：
 * 10.0.3.193
 * 167969729
 * 复制
 * 输出：
 * 167773121
 * 10.3.3.193
 */
public class TestHW33 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String str = "";
        while (in.hasNextLine()) {
            str = in.nextLine();
        }
        if (str.length() < 1 || str.length() > 2500)return;
        int result = traversalString(str);
        System.out.println(result);
    }

    public static int traversalString(String str) {
        int result = 0;
        int index = 0;
        while (index < str.length()) {
            String subStr = str.substring(index, str.length());
            int len = dealWithString(subStr, 0);
            result = Math.max(result, len);
            index++;
        }
        return result;
    }

    public static int dealWithString(String str, int len) {
        StringBuffer subPre = new StringBuffer();
        StringBuffer subAft = new StringBuffer();
        char ch = str.charAt(0);
        int lastIndex = str.lastIndexOf(ch);
        if (lastIndex == 0) {
            len = Math.max(len, 1);
            return len;
        } else {
            int length = lastIndex + 1;
            int subIndex = length / 2;
            if (length % 2 == 0) {
                subPre.append(str.substring(0,  subIndex));
                subAft.append(str.substring( subIndex, lastIndex + 1));
            } else {
                subPre.append(str.substring(0,  subIndex));
                subAft.append(str.substring( subIndex + 1, lastIndex + 1));
            }
            if (subPre.toString().equals(subAft.reverse().toString())) {
                len = Math.max(len, length);
                return len;
            } else {
                str = str.substring(0, lastIndex);
            }
            return dealWithString(str, len);
        }


    }
}
